local couponId = ARGV[1]
local userId = ARGV[2]

local stockKey = 'coupons:stock:' .. couponId

local orderKey = 'coupons:order:' .. couponId

if (tonumber(redis.call('get', stockKey)) <= 0) then
    return 1
end
if (redis.call('sismember', orderKey, userId) == 1) then
    return 2
end
redis.call('incrby', stockKey, -1)
redis.call('sadd', orderKey, userId)
redis.call('xadd','stream.orders','*','userId',userId,'couponId',couponId)
return 0

